www.gusucode.com > 无线传感器网络定位算法 matlab源代码 包含七个算法matlab源码程序 > Localization/Topology Of WSN/calculate_neighbor.m
function calculate_neighbor(comm_r,anchor_comm_r,model,DOI) % comm_r:通信半径 % anchor_comm_r:锚节点的通信半径是未知节点通信半径的倍数 % model:选择的通信模型 % DOI:不规则度,model为 'DOI Model','RIM Model'时有效,否则可缺省 load '../Deploy Nodes/coordinates.mat'; load 'Transmission Model/Parameters_Of_Models.mat'; directory=cd; if nargin==2 model='Regular Model'; end cd(['Transmission Model/Regular Model']); RSS_threshold=dist2rss(comm_r); SendingPower=RSS_threshold+Pl_d0+10*eta*log10(comm_r*anchor_comm_r/d0); cd(['../',model]); try for i=1:all_nodes.nodes_n dist=sqrt(sum(transpose((repmat(all_nodes.true(i,:),all_nodes.nodes_n-1,1)-all_nodes.true([1:i-1,i+1:all_nodes.nodes_n],:)).^2))); RSS=dist2rss(dist); if i<=all_nodes.anchors_n RSS(1:all_nodes.anchors_n-1)=RSS(1:all_nodes.anchors_n-1)+(SendingPower-Pt); else RSS(1:all_nodes.anchors_n)=RSS(1:all_nodes.anchors_n)+(SendingPower-Pt); end neighbor_i=RSS>RSS_threshold; neighbor_matrix(i,:)=[neighbor_i(1:i-1),0,neighbor_i(i:all_nodes.nodes_n-1)]; neighbor_rss(i,:)=[RSS(1:i-1),SendingPower,RSS(i:all_nodes.nodes_n-1)]; end catch for i=1:all_nodes.nodes_n dist=sqrt(sum(transpose((repmat(all_nodes.true(i,:),all_nodes.nodes_n-1,1)-all_nodes.true([1:i-1,i+1:all_nodes.nodes_n],:)).^2))); if DOI==0 K_i=ones(1,all_nodes.nodes_n-1); else K(1)=1; for k=2:360 doi=unifrnd(-DOI,DOI,1,1); K(k)=K(k-1)+doi; end while abs(K(1)-K(360))>DOI for k=2:360 doi=unifrnd(-DOI,DOI,1,1); K(k)=K(k-1)+doi; end end K_i=K(unidrnd(360,1,all_nodes.nodes_n-1)); end RSS=dist2rss(dist,K_i); if i<=all_nodes.anchors_n RSS(1:all_nodes.anchors_n-1)=RSS(1:all_nodes.anchors_n-1)+(SendingPower-Pt); else RSS(1:all_nodes.anchors_n)=RSS(1:all_nodes.anchors_n)+(SendingPower-Pt); end neighbor_i=RSS>RSS_threshold; neighbor_matrix(i,:)=[neighbor_i(1:i-1),0,neighbor_i(i:all_nodes.nodes_n-1)]; neighbor_rss(i,:)=[RSS(1:i-1),SendingPower,RSS(i:all_nodes.nodes_n-1)]; end end cd(directory); try save neighbor.mat neighbor_matrix neighbor_rss comm_r anchor_comm_r model DOI; catch save neighbor.mat neighbor_matrix neighbor_rss comm_r anchor_comm_r model; end end